package com.atung.parking.service;

import com.atung.parking.config.result.ApiResult;
import com.atung.parking.config.result.PageInfoResponse;
import com.atung.parking.enums.OrderState;
import com.atung.parking.enums.OrderType;
import com.atung.parking.request.query.QueryOrdersRequest;
import com.atung.parking.request.save.SaveOrUpdateOrderRequest;
import com.atung.parking.request.save.SaveOrUpdatePackageOrderRequest;
import com.atung.parking.response.page.BillOrderResponse;
import com.atung.parking.response.page.OneselfOrderParkingResponse;
import com.atung.parking.response.page.ParkingOrdersResponse;

import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;

public interface OrderService {
    BillOrderResponse saveParkingOrderService(SaveOrUpdateOrderRequest request);

    BillOrderResponse saveParkingPackageOrderService(SaveOrUpdatePackageOrderRequest request);

    PageInfoResponse<ParkingOrdersResponse> queryOrderParkingListService(QueryOrdersRequest request);

    PageInfoResponse<ParkingOrdersResponse> queryOrderParkingPackageList(QueryOrdersRequest request);

    BigDecimal queryRevenueService(OrderType orderType);

    void exportOrderParkingService(QueryOrdersRequest request, HttpServletResponse httpServletResponse);

    void exportOrderParkingPackageService(QueryOrdersRequest request, HttpServletResponse httpServletResponse);

    List<OneselfOrderParkingResponse> oneselfOrderParkingListService(OrderState orderState);

    ApiResult oneselfOrderDetailsService(Long id);
}
